﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using Entidades.Catalogo;
using Entidades.Reportes;
using Control.Reportes;
using Entidades.General;
using System.Data;
using System.IO;
using CrystalDecisions.Shared;

namespace SICOIA.Reportes
{
    public partial class frmVisor : System.Web.UI.Page
    {
        #region Atributos

        ReportDocument datosGralReport = new ReportDocument();
        EntUsuario usuario = new EntUsuario();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if ((EntUsuario)Session["UserPemex"] == null)
                Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
            else
                usuario = (EntUsuario)Session["UserPemex"];

            if (!Page.IsPostBack)
            {
                HddTipoReporte.Value = (Request.Params["TipoReporte"] != null ? Request.Params["TipoReporte"].ToString() : "");
                HddAfectados.Value = (Request.Params["Afectados"] != null ? Request.Params["Afectados"].ToString() : "");
                HddCveObra.Value = (Request.Params["CveObra"] != null ? Request.Params["CveObra"].ToString() : "");
                DrawReport();
            }
        }

        private void DrawReport()
        {
            try
            {
                dtsReportes dataSource = new dtsReportes();
                CtrlReportes controlReporte = new CtrlReportes();

                List<EntReportes> listaReporte = new List<EntReportes>();
                EntReportes entReporte = new EntReportes();
                entReporte.ListAfectados = HddAfectados.Value;
                entReporte.TipoReporte = HddTipoReporte.Value;
                entReporte.CveObra = HddCveObra.Value;

                listaReporte = (List<EntReportes>)controlReporte.ObtenerTodos(entReporte).ConvertAll<EntReportes>(delegate(IEntidad enti) { return (EntReportes)enti; });


                DataRow drPermisoPaso;
                foreach (EntReportes ent in listaReporte)
                {
                    drPermisoPaso = dataSource.Tables["PermisoDePaso"].NewRow();

                    drPermisoPaso["Activo"] = "Samaria Luna";
                    drPermisoPaso["Denominado"] = ent.Denominado;
                    drPermisoPaso["Norte"] = ent.Norte;
                    drPermisoPaso["Sur"] = ent.Sur;
                    drPermisoPaso["Este"] = ent.Este;
                    drPermisoPaso["Oeste"] = ent.Oeste;
                    drPermisoPaso["Superficie"] = ent.Superficie;

                    drPermisoPaso["Ubicacion"] = ent.Localidad;
                    drPermisoPaso["Municipio"] = ent.Municipio;
                    drPermisoPaso["Estado"] = "Tabasco";

                    drPermisoPaso["Acreditado"] = ent.Acreditado;
                    drPermisoPaso["NoAcreditado"] = ent.NoAcreditado;

                    drPermisoPaso["FechaDiaAcreditado"] = ent.Fecha;//FEcha Acreditado
                    drPermisoPaso["FechaMesAcreditado"] = ent.Fecha;//FEcha Acreditado
                    drPermisoPaso["FechaAnioAcreditado"] = ent.Fecha;//FEcha Acreditado

                    drPermisoPaso["Obra"] = ent.Obra;
                    drPermisoPaso["KmInicio"] = ent.KmInicio;
                    drPermisoPaso["KmFinal"] = ent.KmDestino;
                    drPermisoPaso["Longitud"] = ent.Longitud;
                    drPermisoPaso["AnchoDerechoVia"] = ent.AnchoDerechoVia;

                    drPermisoPaso["NoExpediente"] = ent.NoExpediente;
                    drPermisoPaso["AreaSolicitante"] = ent.AreaSolicitante;
                    drPermisoPaso["NombreCompleto"] = ent.Nombre;
                    drPermisoPaso["SupervisorAutorizado"] = ent.SupervisorAutorizado;
                    drPermisoPaso["Gestor"] = ent.Gestor;
                    drPermisoPaso["FichaGestor"] = ent.FichaGestor;
                    drPermisoPaso["Observaciones"] = ent.Observaciones;

                    drPermisoPaso["Localidad"] = ent.Localidad;
                    drPermisoPaso["Rfc"] = ent.Rfc;
                    drPermisoPaso["Ife"] = ent.Ife;
                    drPermisoPaso["FichaSupervisor"] = ent.FichaSupervisor;

                    drPermisoPaso["Monto"] = ent.Monto;
                    drPermisoPaso["FechaObtencionPaso"] = ent.FechaObtencionPaso;
                    drPermisoPaso["ExpedienteSIARP"] = ent.ExpedienteSIARP;

                    //drPermisoPaso["tipo_reclamo"] = ent.TipoReclamo;                                    
                    //drPermisoPaso["superficie_afectada"] = ent.SuperficieAfectada;
                    //drPermisoPaso["no_oficio"] = ent.NoOficio;
                    //drPermisoPaso["fecha_oficio"] = ent.FechaOficio;
                    //drPermisoPaso["CEDULA_SUPERVISOR"] = ent.CedulaGestor;
                    //drPermisoPaso["CEDULA_GESTOR"] = ent.CedulaGestor;

                    dataSource.Tables["PermisoDePaso"].Rows.Add(drPermisoPaso);
                }

                if (HddTipoReporte.Value.Contains("1"))
                    datosGralReport.Load(Server.MapPath("PortadaExpediente.rpt"));  //Expediente   //rptportadaexpediente 
                else if (HddTipoReporte.Value.Contains("2"))
                    datosGralReport.Load(Server.MapPath("PermisoDePaso.rpt")); //Reporte Permiso de Paso
                else if (HddTipoReporte.Value.Contains("3"))
                    datosGralReport.Load(Server.MapPath("Afectacion.rpt"));  //Reporte Afectacion y Declaracion ==
                else if (HddTipoReporte.Value.Contains("4"))
                    datosGralReport.Load(Server.MapPath("IntegracionExpendiente.rpt"));  //Reporte Integracion de Expedientes
                else if (HddTipoReporte.Value.Contains("5"))
                    datosGralReport.Load(Server.MapPath("ActaPagoCerca.rpt"));  //Reporte Acta de Pago de Cercamiento
                else if (HddTipoReporte.Value.Contains("6"))
                    datosGralReport.Load(Server.MapPath("ConvenioPagoCerca.rpt"));  //Reporte Convenio de Pago de Cercamiento
                else if (HddTipoReporte.Value.Contains("7"))
                    datosGralReport.Load(Server.MapPath("ReporteDeDanos.rpt"));  //Reporte de Daños

                datosGralReport.SetDataSource(dataSource);

                rptVisor.ReportSource = datosGralReport;
                rptVisor.DataBind();
                rptVisor.Visible = false;

                if (!Directory.Exists(Server.MapPath("temporal")))
                    Directory.CreateDirectory(Server.MapPath("temporal"));

                DiskFileDestinationOptions diskopts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
                datosGralReport.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                datosGralReport.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

                DateTime hora = new DateTime();
                String Archivo;
                hora = DateTime.Now;
                Archivo = "reporte" + Guid.NewGuid().ToString();

                string archivo_ruta = "temporal//" + Archivo + ".pdf";
                diskopts.DiskFileName = Server.MapPath(archivo_ruta);
                datosGralReport.ExportOptions.DestinationOptions = diskopts;
                datosGralReport.Export();

                myframe.Attributes.Remove("src");
                myframe.Attributes["src"] = "temporal/" + Archivo + ".pdf";
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

    }
}